﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenExpressApp.MetaAttribute;
using System.Windows.Media;
using System.Reflection;

namespace OpenExpressApp
{
    //一个实体并不只对应一个视图元数据

    /// <summary>
    /// 一个实体类的视图元数据
    /// </summary>
    public interface IEntityViewInfo : IViewInfo
    {
        /// <summary>
        /// 实体类元数据
        /// </summary>
        IEntityViewInfo EntityInfo { get; }
        BusinessObjectAttribute BusinessObjectAttribute { get; }
        DefaultObjectAttribute DefaultObjectAttribute { get; }
        /// <summary>
        /// AutoUI不满足应用需要时,通过挂接此属性来自定义UI
        /// </summary>
        Type ExtensibleUI { get; }

        /// <summary>
        /// 获取是否不允许新建
        /// </summary>
        bool NotAllowNew { get; }
        /// <summary>
        /// 获取是否不允许编辑
        /// </summary>
        bool NotAllowEdit { get; }
        /// <summary>
        /// 获取是否不允许移除
        /// </summary>
        bool NotAllowRemove { get; }
        /// <summary>
        /// 类别
        /// </summary>
        string Catalog { get; }
        /// <summary>
        /// 控制显示在模块列表中的顺序
        /// </summary>
        int Index { get; }
        /// <summary>
        /// 背景颜色
        /// </summary>
        Color BackgroundColor { get; }
        /// <summary>
        /// 默认分组属性值
        /// </summary>
        IList<string> GroupDescriptions { get; }
        /// <summary>
        /// 标记在CondtionQueryTypeAttribute中的QueryType
        /// </summary>
        Type ConditionQueryType { get; }
        /// <summary>
        /// 标记在NavigateQueryTypeAttribute中的QueryType
        /// </summary>
        Type NavigateQueryType { get; }
        /// <summary>
        /// 直接显示在当前对象下的子对象
        /// </summary>
        PropertyInfo TreeChildPropertyInfo { get; }
    }
}